home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib03.dsk / AMPER-READER DEMO.bas < prev    next >
BASIC Source File  |  2023-02-26  |  3KB  |  100 lines

  1. 5  REM  "AMPER-READER" DEMO
  2. 15  GOSUB 5000
  3. 25  GOTO 1000
  4. 35  REM  LIST RECORDS
  5. 45  HOME 
  6. 55  FOR I = 1 TO NR%
  7. 65  PRINT ST$(I)
  8. 75  IF  PEEK( -16384) >127  THEN  POKE  -16368,0: WAIT  -16384,128: POKE  -16368,0
  9. 85  NEXT I
  10. 95  RETURN 
  11. 100  REM  CREATE A TEXT FILE
  12. 110  GOSUB 8000
  13. 120 UL = UL -10
  14. 130  HOME : VTAB 10: PRINT "HOW MANY RECORDS DO YOU WANT TO CREATE?": PRINT "(1 - ";UL;" )"
  15. 140  INPUT NR
  16. 150  IF NR <1  OR NR >UL  THEN 130
  17. 160 BA$ = "THIS IS RECORD NUMBER:"
  18. 170  PRINT D$;"OPEN ";FI$
  19. 180  PRINT D$;"DELETE ";FI$
  20. 190  PRINT D$;"OPEN ";FI$
  21. 200  PRINT D$;"WRITE ";FI$
  22. 210  FOR I = 1 TO NR
  23. 220  PRINT BA$ + STR$(I)
  24. 230  NEXT I
  25. 240  PRINT D$;"CLOSE"
  26. 250  GOTO 1000
  27. 500  REM  READ AND LIST RECORDS...
  28. 510  HOME : VTAB 10: HTAB 10: PRINT "OPTIONS"
  29. 520  VTAB 14: PRINT "1 READ ALL RECORDS"
  30. 530  PRINT "2 READ BLOCKS OF RECORDS"
  31. 540  PRINT "3 RETURN TO MAIN MENU"
  32. 550  VTAB 20: INPUT "OPTION: ";OP
  33. 560  IF OP <1  OR OP >3  THEN 510
  34. 570  ON OP GOTO 600,800,1000
  35. 600  REM  READ ALL RECORDS INTO MEMORY
  36. 620  DIM ST$(UL)
  37. 630 NR% = 0: REM  READ TO EOF
  38. 640 ER% = 0: REM  DEFINE ER% VARIABLE
  39. 650  REM  INVOKE AMPER-READ...
  40. 660  & R(FI$,ST$(1),NR%,ER%)
  41. 670  IF ER% < >5  THEN 3000
  42. 680  GOSUB 35: REM  LIST RECORDS
  43. 690  PRINT : PRINT NR%;" RECORDS READ"
  44. 700  GOSUB 7000
  45. 710  & D(ST$(0))
  46. 720  GOTO 500
  47. 800  REM  BLOCK OF DATA...
  48. 805  HOME 
  49. 810  VTAB 10: INPUT "HOW MANY RECORDS PER BLOCK TO READ? ";NR%
  50. 815  IF NR% <1  THEN 805
  51. 820  GOSUB 8000
  52. 825  DIM ST$(UL)
  53. 830 ER% = 0
  54. 835  REM  INVOKE AMPER-READ
  55. 840  & R(FI$,ST$(1),NR%,ER%)
  56. 845  ON ER% GOTO 3000,3000,3000,3000,850
  57. 850  GOSUB 35: REM  LIST BLOCK
  58. 855  IF ER% = 5  THEN 895
  59. 860  GOSUB 7000
  60. 865  REM  REMOVE LAST BLOCK
  61. 870  & D(ST$(0)): REM  DE-ALLOCATE ST$
  62. 875 X =  FRE(0): REM  RESET POINTERS
  63. 880  DIM ST$(UL): REM  RE-DIMENSION ST$
  64. 885  & C(FI$,ST$(1),NR%,ER%): REM  CONTINUE READING
  65. 890  GOTO 845
  66. 895  PRINT "ALL RECORDS HAVE BEEN READ": GOSUB 7000
  67. 900  & D(ST$(0)): GOTO 500
  68. 1000  REM  MENU
  69. 1010  TEXT : HOME 
  70. 1020  VTAB 10: HTAB 10: PRINT "AMPER-READER DEMO"
  71. 1030  PRINT : HTAB 15: PRINT "MENU": PRINT 
  72. 1040  PRINT "1 CREATE A TEXT FILE"
  73. 1050  PRINT "2 READ AND LIST THE FILE"
  74. 1060  PRINT "3 EXIT"
  75. 1070  VTAB 20: INPUT "OPTION: ";OP
  76. 1080  IF OP <1  OR OP >3  THEN 1070
  77. 1090  ON OP GOTO 100,500,9999
  78. 3000  REM  ER% ERROR ROUTINE....
  79. 3010  PRINT EM$(ER%);" ERROR"
  80. 3020  END 
  81. 5000  REM  HOUSEKEEPING
  82. 5010  HIMEM: 36864
  83. 5020  POKE 1013,76: POKE 1014,0: POKE 1015,147: REM  SET UP '&' VECTOR
  84. 5030 D$ =  CHR$(4)
  85. 5040  IF  PEEK(37632) = 72  THEN 5060: REM  IS AMPER-READ LOADED
  86. 5050  PRINT D$;"BLOADAMPER-READER,A$9300"
  87. 5060 FI$ = "AMPER-READER.FILE"
  88. 5070  DIM EM$(5)
  89. 5080 EM$(1) = "OUT OF MEMORY"
  90. 5090 EM$(2) = "FILE " +FI$ +" NOT FOUND"
  91. 5100 EM$(3) = "DISK READ "
  92. 5110  RETURN 
  93. 7000  REM  DELAY...
  94. 7010  INPUT "PRESS RETURN TO CONTINUE ";A$
  95. 7020  RETURN 
  96. 8000  REM  HOW MANY 30 CHAR STRINGS WILL FIT IN RAM...
  97. 8010 X =  FRE(0): IF X <0  THEN X = X +65535
  98. 8020 UL =  INT(X/30)
  99. 8030  RETURN 
  100. 9999  END